Fix domU (by Kevin Tian)
authordjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Tue, 8 Nov 2005 18:15:55 +0000 (12:15 -0600)
committerdjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Tue, 8 Nov 2005 18:15:55 +0000 (12:15 -0600)
linux-2.6-xen-sparse/arch/ia64/xen/drivers/evtchn_ia64.c
linux-2.6-xen-sparse/drivers/xen/blkback/interface.c

index 236881e3fe178acce877fa998ecff90d4b3f2a36..e8a4e4972c7f1dde5790772852a0079a814a948f 100644 (file)
@@ -36,14 +36,6 @@ int bind_virq_to_irq(int virq, int cpu)
        while(1);
 }
 
-#if 0
-void notify_remote_via_irq(int virq)
-{
-       printk("notify_remote_via_irq called... FIXME??\n");
-       while(1);
-}
-#endif
-
 void unbind_virq_from_evtchn(int virq)
 {
     evtchn_op_t op;
@@ -91,10 +83,9 @@ void unbind_evtchn_from_irq(unsigned int evtchn)
 
 void notify_remote_via_irq(int irq)
 {
-       int evtchn = virq_to_evtchn[irq];       // FIXME... is this right??
-
-       if (VALID_EVTCHN(evtchn))
-               notify_remote_via_evtchn(evtchn);
+       /* IA64 has same irq value as event channel vector */
+       if (VALID_EVTCHN(irq))
+               notify_remote_via_evtchn(irq);
 }
 
 irqreturn_t evtchn_interrupt(int irq, void *dev_id, struct pt_regs *regs)
index be6f935191610a87f3aa9dc3fd58f52049e393cb..77273e1f3a1f55ba2495826e897e7a81885c544e 100644 (file)
@@ -51,6 +51,12 @@ static int map_frontend_page(blkif_t *blkif, unsigned long shared_page)
        blkif->shmem_ref = shared_page;
        blkif->shmem_handle = op.handle;
 
+#ifdef __ia64__
+       /* on some arch's, map_grant_ref behaves like mmap, in that the
+        * passed address is a hint and a different address may be returned */
+       blkif->blk_ring_area->addr = gnttab_map_vaddr(op);
+#endif
+
        return 0;
 }